package com.leetcode.binary_search;

/**
 * @author Dennis Li
 * @date 2020/7/24 17:34
 */
public class FirstBadVersion_278 {

    public boolean isBadVersion(int version) {
        return true;
    }

    public int firstBadVersion(int n) {
        int i = 1, j = n, mid;
        while (i < j) {
            // 防止超界
            mid = i + (j - i) / 2;
            if (isBadVersion(mid)) {
                // 如果中间值是坏的，设置成j而不是j -1
                // 因为j有可能是最初的坏掉的那一部分，因此需要做判定
                // j - 1如果恰好为true，那么会陷入死循环
                j = mid;
            } else {
                i = mid + 1;
            }
        }
        return j;
    }

}
